﻿using System;
using System.Globalization;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using bolsatrabajo.Dominio.NHIBERNATE;
using bolsatrabajo.Persistencia.NHIBERNATE;

namespace bolsatrabajo.Pruebas.NHIBERNATE
{
    [TestFixture]
    public class pruebaPostulanteNH
    {
        [Test]
        public void TestCrearPostulante()
        {
            PostulanteNH postulanteNH = new PostulanteNH(); // Instanciando la clase a probar
            // Creando un objeto en memoria para luego persistirlo en la BD
            Postulante postulanteACrear = new Postulante();
            postulanteACrear.Nombres = "Susana";
            postulanteACrear.ApellidoMaterno = "Chavez";
            postulanteACrear.ApellidoPaterno = "Lopez";
            postulanteACrear.Correo = "suxy@gmail.com";
            postulanteACrear.Contrasena = "amanda";
            postulanteACrear.Sexo = "F";
            postulanteACrear.FechaNacimiento = "fecha";
            Postulante postulanteCreado = null; // Declarando el objeto que contendrá el registro creado en la BD
            Assert.DoesNotThrow(delegate // Asegurando que el "cuerpo" no lance excepciones
            {
                postulanteCreado = postulanteNH.Crear(postulanteACrear); // Ejecutando el método de creación
            });
            Assert.AreEqual(postulanteACrear.Correo, postulanteCreado.Correo); // Asegurando que el código del alumno ya creado sea igual al código del alumno en memoria que solicité crear
        }

        [Test]
        public void TestObtenerPostulante()
        {
            String correoABuscar = "hhggfox@gmail.com";
            PostulanteNH postulanteNH = new PostulanteNH();
            Postulante postulanteBuscado = null;
            Assert.DoesNotThrow(delegate
            {
                postulanteBuscado = postulanteNH.Obtener(correoABuscar);
            });
            Assert.IsNotNull(postulanteBuscado);
            Assert.AreEqual(correoABuscar, postulanteBuscado.Correo);
        }
        /*

        [Test]
        public void TestModificarPostulante()
        {
            PostulacionNH postulanteNH = new PostulacionNH();
            Postulante postulanteAModificar = new Postulante();
            postulanteAModificar.Correo = "jr@gmail.com";
            postulanteAModificar.Nombres = "Jesus";
            postulanteAModificar.ApellidoPaterno = "Salas";
            postulanteAModificar.ApellidoMaterno = "Hinos";
            postulanteAModificar.Sexo = "M";
            postulanteAModificar.FechaNacimiento = DateTime.Parse("11/07/1980");
            postulanteAModificar.Contrasena = "123456";
            postulanteAModificar.Dni = "20323456";
            postulanteAModificar.Telefono = "2765456";
            postulanteAModificar.Direccion = "Pastor Sevilla";
            postulanteAModificar.Ubicacion = "Lima";
            postulanteAModificar.Profesion = "Informatica";
            postulanteAModificar.ExperienciaLaboral = "Mucha";
            postulanteAModificar.Referencia = "Sr. Luigino";
            postulanteAModificar.Estudios= "SRA YVETTE";
            postulanteAModificar.EstadoCivil = "SRA YVETTE";

            Ofertante ofertanteModificado = null;
            Assert.DoesNotThrow(delegate
            {
                ofertanteModificado = ofertanteNH.Modificar(ofertanteAModificar);
            });
            Assert.AreEqual(ofertanteAModificar.Correo, ofertanteModificado.Correo);
        }

        */










        [Test]
        public void TestListarPostulantesxProfesion()
        {
            String xprofesion = "SISTEMAS";
            PostulanteNH listaNH = new PostulanteNH();
            ICollection<Postulante> listaobtenida = null;
            Assert.DoesNotThrow(delegate
            {
                listaobtenida = listaNH.ListarxProfesion(xprofesion);
            });
            //CollectionAssert.IsNotEmpty(listaobtenida);
            Assert.Greater(listaobtenida.Count, 0);
            foreach (Postulante o in listaobtenida)
            {
                Console.WriteLine(o.Correo + "|" + o.Dni + "|" + o.Nombres + "|" + o.Profesion);
            }
        }
    }
}